This illustration shows the relationship of the workflows in an early elaboration iteration. It is constructed from the Workflow Details as they would appear at that time. The intent is to indicate dependencies and show where workflows occur in parallel. The lengths of the bars in the chart (indicating duration) have no absolute significance. For example, it is not intended to convey that Plan for Next Iteration and Manage the Scope of the System must have the same duration. There is also no intention to suggest the application of a uniform level of effort across the duration of the workflows. An indication of the relative effort can be seen in the Process Overview. You can navigate to the corresponding Workflow Detail pages from each line of the chart - just click on the Workflow Detail name. This illustration was created from a Microsoft« Project Plan.

Note that although this is a plan for a single iteration, not all Requirements and Analysis and Design work performed during this iteration is intended for Implementation and Test in this iteration. This explains why the relative effort, within an iteration, for Requirements, Analysis and Design, Implementation and Test, changes through the life-cycle. However, the Iteration Plan will dictate what requirements are explored and refined and what components are designed, even if they are intended for Implementation and Test in a later iteration.

At the start of the elaboration phase, Inception Phase has been completed and the project has been funded. An initial Artifact: Software Development Plan exists, along with preliminary Artifact: Iteration Plans for at least the Elaboration Phase. The requirements of the system, captured by the Artifact: Use-Case Model and Artifact: Supplementary Specifications, have been briefly outlined.

Sample Iteration Plan

Start up: Outline the iteration plan, risks, and architectural objectives.

The Worker: Project Manager starts by sketching a an Artifact: Iteration Plan for the current iteration, based on the outlined Artifact: Software Development Plan during the Initial Iteration in Inception. Evaluation criteria for the architecture are outlined by the Worker: Architect in the Artifact: Software Architecture Document, taking into consideration the "architectural risks" that are to be mitigated (see Artifact: Risk List). Remember that one of the goals of Elaboration is establishing a robust, executable architecture; the plan for doing this needs to be developed in the initial Elaboration iteration.

Environment: Prepare environment for the iteration 

The Worker: Process Engineer and the Worker: Tool Specialist prepare the environment for the iteration (see the Workflow Detail: Prepare Environment for an Iteration). An important input is the evaluation of the previous iteration. The Worker: Process Engineer completes the Artifact: Development Case and tailor templates (see Artifact: Project-Specific Templates), to be ready for the iteration, by tailoring (at least) the Analysis & Design workflow and the Implementation workflow. The Worker: Tool Specialist sets up the tools (see Artifact: Tools) to be used in the iteration. If necessary, produce Artifact: Tools Guidelines. The relevant guidelines are developed (see Workflow Detail: Prepare Guidelines for an Iteration).

Requirements: Decide what will "drive" the development of the architecture.

The Worker: Architect and the Worker: Project Manager then determine which use cases and/or scenarios should be addressed in the current iteration; these use cases and/or scenarios drive the development of the architecture (see Workflow Detail: Manage Scope of the System in the Requirements Workflow). The Artifact: Iteration Plan created in previous step should be updated accordingly.

Understand the "drivers" in detail, if necessary; inspect results.

A number of Worker: Use-Case Specifiers then describe in detail the architecturally significant subsets of the selected use cases/scenarios (see Workflow Detail: Refine the System Definition in the Requirements workflow). As the model evolves, the Worker: System Analyst may restructure the Artifact: Use-Case Model to improve the comprehensibility of the model. The changes to the Artifact: Use-Case Model are then reviewed and approved (see Workflow Detail: Manage Changing Requirements in the Requirements Workflow)

The "drivers" of the architecture are reconsidered according to new information; risks also need to be reconsidered.

The use-case view is revisited again by the Worker: Architect, taking into consideration new use-case descriptions, and possibly a new structure of the Artifact: Use-Case Model (revisit Workflow Detail: Manage Scope of the System in the Requirements Workflow). The task now is to select what set of use cases and/or scenarios should be analyzed, designed and implemented in the current iteration. Note again that the development of these use cases and/or scenarios set the software architecture. The Worker: Project Manager again updates the current iteration plan accordingly (see Artifact: Iteration Plan), and might also reconsider risk management, because new risks might have been made visible according to new information (see Artifact: Risk List).

Use-Case Analysis: Find obvious classes, do an initial (high-level) subsystem partitioning, and start looking at the "drivers" in detail.

To get a general feeling of the obvious classes needed, the Worker: Architect then considers the system requirements, the glossary, the use-case view (but not use case descriptions), and the team's general domain knowledge to sketch the outline of the subsystems, possibly in a layered fashion (see Activity: Identify Design Elements in the Analysis & Design Workflow). The analysis mechanisms (common solutions to frequent analysis problems) are also identified by the architect. In parallel with this effort, a team of Worker: Designers, possibly together with the architect, will start finding Artifact: Analysis Classes for this iteration's use cases and/or scenarios, as well as beginning to allocate responsibilities to the identified classes and analysis mechanisms. The designers will use the obvious classes found by the architect as input.

Then, a number of designers refine the classes identified in the previous step by allocating responsibilities to the classes, and updating their relationships and attributes. It is determined in detail how the available analysis mechanisms are used by each class. When this is done, the Worker: Architect identifies a number of classes that should be considered as architecturally significant, and includes these classes in the logical view section of the Artifact: Software Architecture Document. The resulting analysis artifacts are then reviewed.

Design: Adjust to the implementation environment, decide how the "drivers" are to be designed, and refine the definition of classes, packages and subsystems; inspect results.

The Worker: Architect then refines the architecture by deriving the design mechanisms (e.g. programming language, database, distribution mechanism, communication mechanism) needed by the earlier identified analysis mechanisms (see Activity: Identify Design Mechanisms in the Analysis & Design Workflow). Artifact: Design Subsystems are defined and design classes are allocated to them; the interfaces to subsystems are identified. Remaining design classes are partitioned into packages, and responsibilities for subsystems and packages are allocated to Worker: Designers.

Instances of classes and subsystems are used by designers to describe the realizations of the selected use cases and/or scenarios (see Workflow Detail: Design Components in the Analysis & Design workflow). This puts requirements on the employed model elements and their associated design mechanisms; in the process the interaction diagrams previously created are refined. The requirements put on each design mechanism are handled by the architect (revisit Activity Identify Design Mechanisms in the Analysis & Design workflow). The logical view is updated accordingly by the architect. The resulting design artifacts are then reviewed.

Consider the concurrency and distribution aspect of the architecture.

The next step for the architect is to consider the concurrency and distribution required by the system. This is done by studying the tasks and processes required and the physical network of processors and other devices (see Activity: Describe the Run-time Architecture and Activity: Describe Distribution in the Analysis & Design Workflow). An important input to the architect here are the designed use cases in terms of collaborating objects in interaction diagrams; these objects are allocated to tasks and processes, which in turn are allocated to processors and other devices. This results in both a logical and physical distribution of functionality.

Inspect the architecture

The architecture is reviewed. See Activity: Review the Architecture.

Implementation: Consider the physical packaging of the architecture.

An Worker: Architect now considers the impact of the architectural design onto the implementation model, and defines the initial structure of the implementation model (revisit Activity: Structure the Implementation Model in the Analysis & Design workflow).

Implementation: Plan the integration.

A system integrator now studies the use cases that are to be implemented in this iteration, and defines the order in which subsystems should be implemented, and later integrated into an architectural prototype (see Workflow Detail: Plan the Integration within an Iteration in the Implementation workflow). The results of this planning should be reflected in the Artifact: Software Development Plan.

Test: Plan integration tests and system tests.

A test designer now plans the system tests and the integration tests. Selects measurable testing goals to be used when assessing the architecture. These goals could be expressed in terms of being able to execute a use-case scenario, with a certain response time, or response time under specified load. The test designer also identifies and implements test cases and test procedures. (See Workflow Detail: Plan and Design Test and Workflow Detail: Plan and Design System Test in the Test workflow.)

Implementation: Implement the classes and integrate.

A number of implementers now implement and unit test the classes identified in the architectural design (Step 5, 6, and 7). The implementations of the classes are physically packaged into components and subsystems in the implementation model. The implementers also fix defects (see Workflow Detail: Implement Classes Within an Iteration in the Implementation workflow). The testers integration test the implementation subsystem (see Workflow Detail: Execute Integration Test in the Test workflow), and then the implementers release the tested implementation subsystems to system integration.

Integrate the implemented parts.

The system integrators incrementally integrate the subsystems into an executable architectural prototype (see Workflow Detail: Integrate the System within an Iteration in the Implementation workflow). Each build is tested (see Workflow Detail: Execute Integration Test in the Test workflow).

Test: Assess the executable architecture.

Once the whole system (as defined by the goal of this iteration) has been integrated, the system tester tests the system (see Workflow Detail: Execute System Test in the Test workflow). The test designer then analyzes the results of the test to make sure the testing goals have been reached (see Workflow Detail: Evaluate System Test in the Test workflow). The Worker: Architect will then assess this result and compare it with the risk initially identified.

Assess the iteration itself.

Lastly, the Worker: Project Manager compares the iteration's actual cost, schedule, and content with the iteration plan; determine if rework needs to be done, and if so, assign to future iterations; update the risk list (see Artifact: Risk List); update the project plan (see Artifact: Software Development Plan); and prepare an outline of an iteration plan for the next iteration (see Artifact: Iteration Plan). Productivity figures, size of code, and size of database might be interesting to consider here.

The Worker: Project Manager, in cooperation with the Worker: Process Engineer and the Worker: Tool Specialist, evaluate the use process and tools.

Result

The result of this initial iteration would be a first cut at the architecture, consisting of fairly described architectural views (use-case view, logical view, process view, deployment view, implementation view) and an executable architecture prototype.

Subsequent Iterations In Elaboration

Subsequent iterations can be initiated to further enhance the understanding of the architecture. This might imply a further enhancement of the design or implementation model (that is, the realization of more use cases, in priority order, of course). Whether this needs to take place depends on considerations such as the complexity of the system and its architecture, associated risks, and domain experience.

In each iteration the supporting environment is further refined. If the first Elaboration iteration  focused on preparing the environment for Analysis & Design, and Implementation, then the second iteration may focus on preparing the test environment. Preparing the test environment includes configuring the test process, and writing that part of the development case, preparing templates and guidelines for test and setting up the test tools.

Copyright  ⌐ 1987 - 2000 Rational Software Corporation

Display Rational Unified Process using frames

Rational Unified Process